package main

import (
	"flag"
	"fmt"
	"log"

	"data_service/db"
	"data_service/handlers"
	"data_service/models"
	"data_service/router"
	"data_service/utils"
)

// go run main.go -migrate 执行数据迁移
func main() {
	// 初始化日志系统
	utils.InitLogger()

	// 加载配置文件
	cfgPath := "./config.yaml"
	cfg, err := LoadConfig(cfgPath)
	if err != nil {
		log.Fatalf("❌ 加载配置文件失败: %v", err)
	}

	// 定义命令行参数
	migrate := flag.Bool("migrate", false, "是否执行数据库迁移")
	flag.Parse()

	// 初始化数据库
	dbInstance := db.InitDB()
	models.SetDB(dbInstance)

	// 初始化微信配置
	handlers.InitWechatConfig(
		cfg.Wechat.AppID,
		cfg.Wechat.AppSecret,
		cfg.Server.BackendURL,
		cfg.Server.FrontendURL,
	)

	// 根据命令行参数决定是否执行数据库迁移
	if *migrate {
		db.AutoMigrateDB(dbInstance)
		fmt.Println("✅ 数据库迁移完成")
		return
	}

	// 初始化聊天Hub
	router.InitChatHub()

	// 初始化服务
	handlers.InitFriendService(dbInstance)
	handlers.InitAdminService(dbInstance)

	// 设置路由
	r := router.SetupRouter()

	// 启动HTTP服务器
	log.Println("🚀 启动HTTP服务器在端口 :8081")
	log.Println("📡 WebSocket连接地址: ws://38131sx507pn.vicp.fun/chat/ws")
	log.Println("🌐 HTTP API地址: http://38131sx507pn.vicp.fun")
	if err := r.Run(":8081"); err != nil {
		log.Fatalf("❌ 启动HTTP服务器失败: %v", err)
	}
}
